//express框架
let express=require('express');
//url模块
let {parse}=require('url');
//数据库连接
let db=require('./db');
//ui路由、逻辑路由设置
let uiRouter=require('./router/uiRouter');
let yewuRouter=require('./router/yewuRouter');
//express-session(session和cookie结合使用的middleware)、connect-mongo(session持久化)
let session = require('express-session');
const MongoStore = require('connect-mongo')(session);

//创建app服务对象
let app=express();
//禁止显示x-powered-by
app.disable('x-powered-by');
//设置模板引擎
app.set("view engine","ejs");
//设置模板文件夹目录
app.set("views","./views");
//如果是手机端就拒绝访问
app.use(function(req,res,next){
    let deviceAgent = req.headers["user-agent"].toLowerCase();
    let agentID = deviceAgent.match(/(iphone|ipod|ipad|android)/);
    if(agentID){
       res.send('<h1>请使用电脑访问本网站</h1>')
    }else{
        next()
    }

})
//定义cookie和session组合的配置对象
app.use(session({
    name:'sid',//cookie的key
    secret:'user',//加密签名
    saveUninitialized:false,//是否在内容存储前开启会话,默认true
    resave:true,//每次都重新保存,不管存储内容有没有改变
    store:new MongoStore({
        url:'mongodb://root:12345678@localhost/cookies?authSource=admin',
        touchAfter:1800 //修改频率 半小时更新一次
    }),
    cookie:{
        // maxAge:30*1000
    }
}));
db.then((info)=>{
    console.log(info);
    //使用内置中间件用于获取post请求体
    app.use(express.urlencoded({extended:true}));
    //暴露public目录下的静态文件
    app.use(express.static('public'));
    //使用Router中间件
    app.use(uiRouter);
    app.use(yewuRouter)
    
    //404
    app.use(function (req,res){
        res.status(404).send('哦噢~页面找丢了~')
    });
   

}).catch((err)=>{
    console.log("连接数据库失败",err)
});

//监听端口
app.listen(8080,(err)=>{
    if(!err){
        console.log('服务器启动成功,监听端口8080')
    }else{
        console.log(err)
    }
});